Spring Boot 返回JSON 數據,一分鐘搞定!

JSON

Posted by Java on 2019-11-18 14:10:00

在WEB 項目中返回JSON 數據是常見的交互形式,在Spring Boot 中這一切都變得十分簡單。So easy!!!

你所需具備的基礎

更多請在Java技術棧微信公眾號後台回復關鍵字:boot

如何返回JSON 數據?

在Spring Boot 中返回JSON 數據很簡單,如下幾步。

加入依賴


    org.springframework.boot
    spring-boot-starter-parent
    2.0.4.RELEASE



    org.springframework.boot
    spring-boot-starter-web

除了Spring Boot必須自帶的parent依賴外,僅僅只需要加入這個  spring-boot-starter-web 包即可,它會自動包含所有JSON處理的包,如下圖所示。

這個插件感謝知識星球球友的分享,簡單不錯,點擊文章底部的閱讀原文,可以加入一起學習。

返回XML 數據格式定義

1)定義返回方式

在Controller類上面用  @RestController 定義或者在方法上面用  @ResponseBody 定義,表明是在Body區域輸出數據。

下面是使用示例:

@RestController
public class JsonTest {

    @GetMapping(value = "/user/{userId}")
    public User getUserInfo(@PathVariable("userId") String userId) {
        User user = new User("Java技术栈", 18);
        user.setId(Long.valueOf(userId));
        return user;
    }

}

2)自定義輸出格式

上面的方法直接返回對象,對象會自動轉換為XML 格式,不過是默認的標籤,可以通過以下標籤進行自定義XML 格式。

public class User {

    @JsonProperty("user-name")
    private String userName;

    private Long id;

    private Integer age;

    @JsonIgnore
    private String address;

    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String memo;

    // get set 略

}

程序輸出:

{"id":1,"age":18,"user-name":"Java技术栈"}

上面演示了幾個常用的註解。

@JsonProperty:  可用來自定義屬性標籤名稱;

@JsonIgnore:  可用來忽略不想輸出某個屬性的標籤;

@JsonInclude:  可用來動態包含屬性的標籤,如可以不包含為null值的屬性;

更多註解可以查看這個包:

如何手動完成對象和Json 的互轉?

jackson-databind 包裡面有一個  com.fasterxml.jackson.databind.ObjectMapper 類可以完成對象和Json數據的互轉,下面是一個簡單的合作示例。

ObjectMapper objectMapper = new ObjectMapper();

String userJsonStr = objectMapper.writeValueAsString(user);

User jsonUser = objectMapper.readValue(userJsonStr, User.class);

更多相關的使用及原理可以查看這個包。

好了,Spring Boot 返回JSON 格式數據就是這麼簡單,有什麼不懂的可以點擊閱讀原文加入星球和大家一起學習討論。

《Spring Boot 返回XML 數據》棧長正在拼命寫作中,過兩天分享。